#include <iostream>

class NonCopyable
{
public:
    NonCopyable(const NonCopyable &rhs)  = delete;
    NonCopyable &operator=(const NonCopyable &rhs)  = delete;

};

class Derived
: NonCopyable
{
public:
    /* Derived(const Derived &rhs)  = delete; */
    /* Derived &operator=(const Derived &rhs)  = delete; */
private:
    /* Derived(const Derived &rhs); */
    /* Derived &operator=(const Derived &rhs); */
};

int main()
{
    Derived d1;
    Derived d2 = d1;//error

    Derived d3;
    d3 = d1;//error
    return 0;
}
